kbmMemTable a filtrovani

Otázka od: Karel Pecinka

2. 8. 2004 15:31

Zdravim,
 
nevite nekdo, jak funguje filtrovani v tabulce kbmMemTable? V udalosti
onFilterRecord si krome nastaveni promenne Accept mj. i zvysuju lokalni
promennou v pripade, ze jeden ze sloupcu tabulky nabyva urcitych hodnot
a Accept je true. Cislo, ktere se mi ale dostane do teto promenne, je
uplne nesmyslne, mnohdy i nekolikanasobne vyssi nez je pocet zaznamu v
tabulce. Podle toho by to vypadalo, ze pri filtrovani dochazi k
nekolikanasobnemu pruchodu cele tabulky.
 
Je mozne nejak dosahnout toho, abych si spocital co potrebuji jiz pri
filtrovani? Potrebuju mit totiz odezvu programu co nejkratsi.
 
Diky za rady.
 
Karel, D5

Odpovedá: Ivan Turcan

2. 8. 2004 18:26

>From: "Karel Pecinka" <k.pecinka@seznam.cz>
>Sent: Monday, August 02, 2004 4:31 PM
> nevite nekdo, jak funguje filtrovani v tabulce kbmMemTable? V udalosti
> onFilterRecord si krome nastaveni promenne Accept mj. i zvysuju lokalni
> promennou v pripade, ze jeden ze sloupcu tabulky nabyva urcitych hodnot
> a Accept je true. Cislo, ktere se mi ale dostane do teto promenne, je
> uplne nesmyslne, mnohdy i nekolikanasobne vyssi nez je pocet zaznamu v
> tabulce. Podle toho by to vypadalo, ze pri filtrovani dochazi k
> nekolikanasobnemu pruchodu cele tabulky.
>
> Je mozne nejak dosahnout toho, abych si spocital co potrebuji jiz pri
> filtrovani? Potrebuju mit totiz odezvu programu co nejkratsi.


Caves,

v podstate mas pravdu filterrecord pobezi trebarz aj 1 000 000 krat na kazdy
record , zalezi ako casto sa robi refresh okna,gridu atp. , resp. ako casto
ho dataset robi.
Mas moznost pouzit onFilterIndex, ten je vyhodnejsi lebo bezi po indexoch a
pobezi len raz na kazdy zaznam


best regards
Ivan Turcan
iturcan@drake.sk
www.components4developers.com

The best components for the best developers
kbmMW - kbmMemTable - kbmWABD - kbmX10



Odpovedá: Karel Pecinka

2. 8. 2004 19:16

Jak presne se da pouzit ten onFilterIndex? Pomuze mi napr. pri
prohledavani libovolne casti retezce a to jeste kdyz potrebuju ignorovat
diakritiku v dotazu i datech? V napovede kterou mam ke kbmMemTable se
nic nepise o zadnym filtrovani.


> -----Original Message-----
> From: delphi-l-owner@clexpert.cz
> [mailto:delphi-l-owner@clexpert.cz] On Behalf Of Ivan Turcan
> Sent: Monday, August 02, 2004 7:26 PM
> To: delphi-l@clexpert.cz
> Subject: Re: kbmMemTable a filtrovani
>
>
> >From: "Karel Pecinka" <k.pecinka@seznam.cz>
> >Sent: Monday, August 02, 2004 4:31 PM
> > nevite nekdo, jak funguje filtrovani v tabulce kbmMemTable?
> V udalosti
> >onFilterRecord si krome nastaveni promenne Accept mj. i
> zvysuju lokalni
> >promennou v pripade, ze jeden ze sloupcu tabulky nabyva
> urcitych hodnot
> >a Accept je true. Cislo, ktere se mi ale dostane do teto
> promenne, je
> >uplne nesmyslne, mnohdy i nekolikanasobne vyssi nez je pocet
> zaznamu v
> >tabulce. Podle toho by to vypadalo, ze pri filtrovani dochazi k
> >nekolikanasobnemu pruchodu cele tabulky.
> >
> > Je mozne nejak dosahnout toho, abych si spocital co
> potrebuji jiz pri
> > filtrovani? Potrebuju mit totiz odezvu programu co nejkratsi.
>
>
> Caves,
>
> v podstate mas pravdu filterrecord pobezi trebarz aj 1 000
> 000 krat na kazdy record , zalezi ako casto sa robi refresh
> okna,gridu atp. , resp. ako casto ho dataset robi. Mas
> moznost pouzit onFilterIndex, ten je vyhodnejsi lebo bezi po
> indexoch a pobezi len raz na kazdy zaznam
>
>
> best regards
> Ivan Turcan
> iturcan@drake.sk
> www.components4developers.com
>
> The best components for the best developers
> kbmMW - kbmMemTable - kbmWABD - kbmX10
>
>
>
>
>
>


Odpovedá: Ivan Turcan

2. 8. 2004 19:33


>----- Original Message -----
>From: "Karel Pecinka" <k.pecinka@seznam.cz>
>To: <delphi-l@clexpert.cz>
>Sent: Monday, August 02, 2004 8:16 PM
>Subject: Re: kbmMemTable a filtrovani


> Jak presne se da pouzit ten onFilterIndex? Pomuze mi napr. pri
> prohledavani libovolne casti retezce a to jeste kdyz potrebuju ignorovat
> diakritiku v dotazu i datech? V napovede kterou mam ke kbmMemTable se
> nic nepise o zadnym filtrovani.

easy, vytvor si index aby si to mal rychlejsie   a na onFilterIndex si
zaves event, kontrolu urob defakto tak isto ako cez onFIlterRecord...
rozdiel je ten ze Filtered nemusis pouzit.

yep, mozes si urobit funkciu napr. PorovnajObsahRetazca
(field:TField):Boolean a tu volat v onFIlterIndex napr takto:

 Accepted := PorovnajObsahRetazca (Dataset.fieldbyname ('SomeMyField'));



 best regards
 Ivan Turcan
 iturcan@drake.sk
 www.components4developers.com

 The best components for the best developers
 kbmMW - kbmMemTable - kbmWABD - kbmX10



Odpovedá: Karel Pecinka

2. 8. 2004 20:56


U kbmMemTable mam tedy vytvoren index, v onFilterIndex nastavuju Accept
presne jako jsem to delal v onFilterRecord, a at Filtered pouzivam nebo
ne, vzdy mam jako vysledek prazdny dataset. Kdyz pouziju onFilterRecord
tak filtrovani funguje az na to, ze je to pomalejsi a filtrovani probiha
nekolikrat. Nemusim nejak explicitne vyvolat provedeni filtrace?

Nechapu ale vyznam toho indexu - jestli onFilterRecord prochazi cely
DataSet, aplikace prece musi u kazdeho zaznamu rozhodnout, zda zaznam
vyhovuje podminkam nebo ne. Na co tedy index?

Existuje nejaky help k teto komponente?

Diky

Karel, D5


> easy, vytvor si index aby si to mal rychlejsie   a na
> onFilterIndex si
> zaves event, kontrolu urob defakto tak isto ako cez onFIlterRecord...
> rozdiel je ten ze Filtered nemusis pouzit.


Odpovedá: Ivan Turcan

3. 8. 2004 10:59


>----- Original Message -----
>From: "Karel Pecinka" <k.pecinka@seznam.cz>
>
> U kbmMemTable mam tedy vytvoren index, v onFilterIndex nastavuju Accept
> presne jako jsem to delal v onFilterRecord, a at Filtered pouzivam nebo
> ne, vzdy mam jako vysledek prazdny dataset. Kdyz pouziju onFilterRecord
> tak filtrovani funguje az na to, ze je to pomalejsi a filtrovani probiha
> nekolikrat. Nemusim nejak explicitne vyvolat provedeni filtrace?
>
> Nechapu ale vyznam toho indexu - jestli onFilterRecord prochazi cely
> DataSet, aplikace prece musi u kazdeho zaznamu rozhodnout, zda zaznam
> vyhovuje podminkam nebo ne. Na co tedy index?

rozdiel medzi FilterRecord a FIlterIndex je ten ze
onFilterIndex je prepocitavany pre kazdy zaznam len raz, a to sice pri
inserte,edite, appende, delete a pod. eg. preco index, preto lebo je to z
indexom rychlejsie 
na rozdiel od neho FIlterRecord je prepocitavany zakazdym pri zmene velkosti
gridu, scrolovani atp....

v pripade ze pouzijes filterindex tak netreba nastavovat Filtered na true

> Existuje nejaky help k teto komponente?

jasne, ale je to za mensi poplatok  

ps. mozes urobit aj to ze si vytvoris dalsiu tabulku a pripojis si ju na
nadriadenu memtable cez attachedto property. ma to celkom dobre pouzitie
napr. pre rozne views ...


best regards
 Ivan Turcan
 iturcan@drake.sk
 www.components4developers.com

 The best components for the best developers
 kbmMW - kbmMemTable - kbmWABD - kbmX10